

//订阅者 节点





#include <memory>

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
using std::placeholders::_1;



class MinimalSubscriber : public rclcpp::Node//继承节点类  创建节点类名字为 MinimalSubscriber      下面的this             主函数调用过一次
{
  public:
    MinimalSubscriber()
    : Node("minimal_subscriber")//节点名为minimal_subscriber
    {







      subscription_ = this->create_subscription<std_msgs::msg::String>(       //创建订阅者赋给变量subscription
      "topic", 10, std::bind(&MinimalSubscriber::topic_callback, this, _1));//订阅String消息，订阅的话题名叫做“topic”，保存消息的队列长度是10，当订阅到数据时，会进入回调函数topic_callback

     


    }

  private:
    void topic_callback(const std_msgs::msg::String::SharedPtr msg) const//回调函数   当接受到消息后执行
    {
      RCLCPP_INFO(this->get_logger(), "I heard: '%s'", msg->data.c_str());//打印消息： I heard:+接收到的消息      （使用日志打印的方法）
    }
    //发布者声明
    rclcpp::Subscription<std_msgs::msg::String>::SharedPtr subscription_;
};

int main(int argc, char * argv[])
{
  rclcpp::init(argc, argv);//初始化ros2节点



  rclcpp::spin(std::make_shared<MinimalSubscriber>());




  rclcpp::shutdown();//终止命令检测     Ctrl+c  终止此ros2节点
  return 0;
}
